22034cc9a0256bfb589bd9e6947b53cf9d0cae1d,src/edu/stanford/nlp/optimization/AbstractCachingDiffFunction.java,AbstractCachingDiffFunction,gradientCheck,#number#number#number[]#,28
Before Change
oldX = x[paramIndex];
x[paramIndex] = oldX + epsilon;
// System.err.println("\n\n\ncalling valueAt1");
plusVal = valueAt(x);
x[paramIndex] = oldX - epsilon;
// System.err.println("\n\n\ncalling valueAt2");
minusVal = valueAt(x);
appDeriv = (plusVal - minusVal) / twoEpsilon;
calcDeriv = savedDeriv[paramIndex];
diff = Math.abs(appDeriv - calcDeriv);
pct = diff / Math.min(Math.abs(appDeriv), Math.abs(calcDeriv));
if (diff > diffThreshold && pct > diffPctThreshold) {
System.err.printf("Grad fail at %2d, appGrad=%9.7f, calcGrad=%9.7f, diff=%9.7f, pct=%9.7f\n", paramIndex,appDeriv,calcDeriv,diff,pct);
returnVal= false;
After Change
double oldX = x[paramIndex];
x[paramIndex] = oldX + epsilon;
// System.err.println("\n\n\ncalling valueAt1");
double plusVal = valueAt(x);
x[paramIndex] = oldX - epsilon;
// System.err.println("\n\n\ncalling valueAt2");
double minusVal = valueAt(x);
double appDeriv = (plusVal - minusVal) / twoEpsilon;
double calcDeriv = savedDeriv[paramIndex];
double diff = Math.abs(appDeriv - calcDeriv);
double pct = diff / Math.min(Math.abs(appDeriv), Math.abs(calcDeriv));
if (diff > diffThreshold && pct > diffPctThreshold) {
System.err.printf("Grad fail at %2d, appGrad=%9.7f, calcGrad=%9.7f, diff=%9.7f, pct=%9.7f\n", paramIndex,appDeriv,calcDeriv,diff,pct);
returnVal= false;